/**
 * <p>Title: AuthoritySvc</p>
 * <p>Description: The interface of AuditTrailSvc</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * <p>Company: Baosight Software</p>
 * @author Zuo Yefeng
 * @version 1.0
 * <pre>Histroy:
 *       2016-10-9  Zuo Yefeng  Create
 *</pre>
*/

package cn.jhg.account.service;

import java.sql.Timestamp;
import java.util.List;

import cn.jhg.account.entity.AuditTrailRecord;
import cn.jhg.account.util.ServiceResult;

public interface AuditTrailSvc {
	/**
	 * 添加审计追踪记录
	 * @param record
	 * @return 错误代码
	 */
	public ServiceResult<Integer> addRecord(AuditTrailRecord record);
	// AuditTrialRecord 实体包含一个  metadata：Document 属性，保存审计追踪记录的元数据
	// 元数据保存在 mongodb 数据库中，mysql 中只保存其 id
	// 除元数据外其它数据存入 t_ibcp_audit_trail_record 表
	// 新增时生成一个新的 id，并用新的 id 将元数据存入 mogodb 中
	// t_ibcp_audit_trail_record 表的 metadata 字段保存 id

	/**
	 * 根据 id 查询审计追踪记录
	 * @param id
	 * @return  ServiceResult<AuditTrailRecord> 审计记录实体 ，error
	 */
	public ServiceResult<AuditTrailRecord> queryRecordById(int id);

	/**
	 * 根据时间、类型、对象、用户等查询审计追踪记录
	 * @param begin	起始时间
	 * @param end	结束时间
	 * @param tid	审计追踪类型
	 * @param otid	对象类型
	 * @param uid	用户 id
	 * @param lid	位置 id
	 * @return ServiceResult<List<Integer>> 
	 */
	public  ServiceResult<List<Integer>> findRecord(Timestamp begin, Timestamp end, int tid, int otid, int uid, int lid);
}
